home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / pdcurs21.zip / PRIVATE.ZIP / _SCB.C < prev    next >
Text File  |  1992-11-21  |  3KB  |  89 lines

  1. #define        CURSES_LIBRARY  1
  2. #define NEEDS_OS2       1
  3. #include <curses.h>
  4.  
  5. #ifndef        NDEBUG
  6. char *rcsid__scb = "$Header: c:/curses/private/RCS/_scb.c%v 2.0 1992/11/15 03:24:16 MH Rel $";
  7. #endif
  8.  
  9. #ifdef OS2
  10. #  if defined (CURSES__32BIT__) || defined (CSET2)
  11. #     include <signal.h>
  12. #  else
  13. #     define INCL_DOSSIGNALS
  14. #     define INCL_NOCOMMON
  15. #     include <bsedos.h>
  16. #  endif
  17. #endif
  18.  
  19.  
  20.  
  21. /*man-start*********************************************************************
  22.  
  23.   PDC_set_ctrl_break() - Enables/Disables the host OS BREAK key check.
  24.  
  25.   PDCurses Description:
  26.        This is a private PDCurses routine.
  27.  
  28.        Enables/Disables the host OS BREAK key check. This function toggles
  29.        the BREAK setting. If it was on, it turns itoff; if it was aff it turns
  30.        it on.
  31.  
  32.   PDCurses Return Value:
  33.        This function returns OK on success and ERR on error.
  34.  
  35.   PDCurses Errors:
  36.        No errors are defined for this function.
  37.  
  38.   Portability:
  39.        PDCurses        int PDC_set_ctrl_break( bool setting );
  40.  
  41. **man-end**********************************************************************/
  42.  
  43. int    PDC_set_ctrl_break(bool setting)
  44. {
  45. #ifdef FLEXOS
  46.        retcode = s_get(T_VIRCON, 0L, (char *) &vir, (long) sizeof(vir));
  47.        if (retcode < 0L)
  48.                return( ERR );
  49.  
  50.        vir.vc_kbmode = ((vir.vc_kbmode & ~0x01) & (setting) ? 0x01 : 0x00);
  51.  
  52.        retcode = s_set(T_VIRCON, 0L, (char *) &vir, (long) sizeof(vir));
  53.        return( (retcode < 0L) ? ERR : OK );
  54. #endif
  55. #ifdef DOS
  56.        regs.h.ah = 0x33;
  57.        regs.h.al = 0x00;
  58.        regs.h.dl = (unsigned char) (setting ? 1 : 0);
  59.        int86(0x21, ®s, ®s);
  60.        return( OK );
  61. #endif
  62. #ifdef OS2
  63. #  if defined (CURSES__32BIT__) || defined (CSET2)
  64.        if (setting) {
  65.                signal (SIGINT, SIG_DFL);
  66.                signal (SIGBREAK, SIG_DFL);
  67.        } else {
  68.                signal (SIGINT, SIG_IGN);
  69.                signal (SIGBREAK, SIG_IGN);
  70.         }
  71.        return( OK );
  72. #  else
  73.        PFNSIGHANDLER oldHandler;
  74.        USHORT oldAction, Action;
  75.  
  76.        /* turn off control C checking */
  77.        if (setting)
  78.                Action = SIGA_KILL;
  79.        else
  80.                Action = SIGA_IGNORE;
  81.        DosSetSigHandler((PFNSIGHANDLER) NULL, &oldHandler, &oldAction,
  82.                Action, SIG_CTRLBREAK);
  83.        DosSetSigHandler((PFNSIGHANDLER) NULL, &oldHandler, &oldAction,
  84.                Action, SIG_CTRLC);
  85.        return( OK );
  86. #  endif       
  87. #endif
  88. }
  89.